package biz

import (
	"time"

	"github.com/go-kratos/kratos/v2/log"
)

// Course 定义课程结构体
type Course struct {
	CourseID          string    `json:"course_id" gorm:"type:string(11);primaryKey;comment:课程ID"`
	CreatedAt         time.Time `json:"created_at" gorm:"comment:创建时间"`
	UpdatedAt         time.Time `json:"updated_at" gorm:"comment:更新时间"`
	CourseName        string    `json:"course_name" gorm:"comment:课程名称"`
	CourseDescription string    `json:"course_description" gorm:"comment:课程描述"`
}

// CourseRepo 定义课程服务接口
type CourseRepo interface {
	// CreateCourse 创建课程
	CreateCourse(request *CreateCourseRequest) (*CreateCourseResponse, error)

	// DeleteCourse 删除课程
	DeleteCourse(courseID string) error

	// UpdateCourse 修改课程信息
	UpdateCourse(request *CreateCourseRequest, courseID string) error

	// GetCourseInfo 获取课程信息
	GetCourseInfo(courseID string) (*GetCourseResponse, error)
}

type CourseCase struct {
	repo CourseRepo
	log  *log.Helper
}

// CreateCourseRequest 请求格式
type CreateCourseRequest struct {
	CourseName        string `json:"course_name"`
	CourseDescription string `json:"course_description"`
}

// CreateCourseResponse 响应格式
type CreateCourseResponse struct {
	Message  string `json:"message"`
	CourseID string `json:"course_id"`
}

// GetCourseResponse 响应格式
type GetCourseResponse struct {
	CourseID          string `json:"course_id"`
	CourseName        string `json:"course_name"`
	CourseDescription string `json:"course_description"`
}
